package com.cs.archivesmanagement.service;

import com.cs.archivesmanagement.entity.AmAccount;
import com.cs.archivesmanagement.entity.AmArchives;
import com.cs.archivesmanagement.entity.AmArchivesRequests;
import com.cs.archivesmanagement.entity.AmFileType;

import java.sql.Timestamp;
import java.util.ArrayList;

/**
 * Created by amo on 2015/8/21.
 */
public interface ArchivesService {


    /**
     * 增加单个档案
     * @return
     */



    boolean addArchives(AmArchives amArchives);


    AmArchives findById(Object id);


    boolean addArchiveRequest(AmArchivesRequests amArchivesRequests);


    /**
     * 根据部门类型和档案的类型去查找档案列表
     * @param departmentId 部门的ID 为空时查找全部
     * @param TypeId 档案类型的ID 为空时查找全部
     * @param keyword 包含的关键词 为空时则查找全部
     * @param accountId 这个档案是谁上传的  为空时则查找全部
     * @param archivesStatus 档案的状态是有效或者无效 为空时查找全部
     * @return 返回条件查询的档案列表
     */

    ArrayList<AmArchives> getAllAmArchivesByParameter(Integer departmentId,Integer TypeId,String keyword,Integer accountId,Integer archivesStatus);


    /**
     *
     * @param amArchives 要增加/修改/删除/借阅的档案实体
     * @param operationType 增删查改的操作类型
     * @param startTime 如果是借阅，必须有一个起始时间和结束时间
     * @param endTime 如果是借阅 ，必须有一个起始时间和结束时间
     * @param applyerId 申请人的ID
     * @return 是否成功申请的布尔值
     */




    boolean archivesRequest(AmArchives amArchives,Integer operationType,Timestamp startTime,Timestamp endTime,Integer applyerId);


    /**
     * 获得所有在网文件类型
     * @return
     */

    ArrayList<AmFileType> getAllFileType();


    /**
     * 上传档案的文件，并且返回这个地址
     * @param bytes 字节流
     * @return 返回储存的相对地址
     */




    String uploadFile(Byte[] bytes);


    /**
     * 根据部门类型和档案的类型去查找档案列表
     * @param departmentId 部门的ID 为空时查找全部
     * @param TypeId 档案类型的ID 为空时查找全部
     * @param keyword 包含的关键词 为空时则查找全部
     * @param accountId 这个档案是是上传的  为空时则查找全部
     * @param archivesStatus 档案的状态是有效或者无效 为空时查找全部
     * @return 返回条件查询的档案列表的数目
     */

    int getAmArchivesCount(Integer departmentId,Integer TypeId,String keyword,Integer accountId,Integer archivesStatus);


}
